// 手写lodash.get，支持 a.b.c与a.b['c']的方式

function get(obj, path, defaultValue) {
    // 将 path 转换成数组形式
    const keys = Array.isArray(path) ? path : path.split('.').filter(key => key.length);
    // 如果 path 不是数组，则把它转化为数组

    // 遍历对象，查找属性值
    let result = obj;
    for (let i = 0; i < path.length; i++) {
        if (result == null) { // 如果已经找到了空值或者 undefined，则直接返回默认值
            return defaultValue;
        }
        // 使用 [] 运算符访问对象的属性，这样可以支持 a.b['c'] 的写法
        console.log(path[i]);
        result = result[path[i]];
    }

    // 如果找到了对应的属性值，则返回该值；否则返回默认值
    return result !== undefined ? result : defaultValue;
}


const obj = { a: { b: { c: 123 } } };
console.log(get(obj, 'a.b["c"]')); // 输出 123